home *** CD-ROM | disk | FTP | other *** search
- /* Copyright 1992 H.Ogasawara (COR.) */
- /* MenuButton を追加 1994 CAB */
- /* 修正 1994 5/4 COR. */
-
- #include <wlib.h>
- #include <parts.h>
- #include "MgButton.h"
-
- MgButtonOperation( wp, info, mp )
- WindowID wp;
- EventInfo *info;
- MgButton *mp;
- {
- for( mp= mp->next ; mp ; mp= mp->next ){
- if( ClipInner( (ClipClass*)mp, info->x, info->y ) ){
- DrawBuf dbuf[2];
- int press= TRUE;
- int sx, sy, hx, hy;
- WindowGetScreenPosition( wp, &sx, &sy );
- WindowGetHome( wp, &hx, &hy );
- switch( mp->type ){
- case ToggleButton:
- DrawSetLine( dbuf, mp->x1+1, mp->y1+1,
- mp->x2-1, mp->y2-1,
- ShadowDown, OptionShadow );
- DrawSetLine( dbuf+1, mp->x1+1, mp->y1+1,
- mp->x2-1, mp->y2-1,
- 1, OptionBox );
- break;
- case PushButtonSht:
- DrawSetPut( dbuf, mp->x1, mp->y1,
- ((MgButtonSht*)mp)->shon );
- DrawSetPut( dbuf+1, mp->x1, mp->y1,
- ((MgButtonSht*)mp)->shoff );
- break;
- case TouchButton:
- DrawSetLine( dbuf, mp->x1, mp->y1,
- mp->x2, mp->y2,
- ColorGray|OptionXor, OptionFill );
- WindowDraw( wp, dbuf, 1 );
- DrawSetLine( dbuf, mp->x1, mp->y1,
- mp->x2, mp->y2,
- ColorGray|OptionXor, OptionFill );
- WindowDraw( wp, dbuf, 1 );
- return mp->ret;
- default:
- DrawSetLine( dbuf, mp->x1, mp->y1,
- mp->x2, mp->y2,
- ShadowDown, OptionShadow );
- DrawSetLine( dbuf+1, mp->x1, mp->y1,
- mp->x2, mp->y2,
- ShadowUp, OptionShadow );
- break;
- }
- WindowDraw( wp, dbuf, 1 ); /* 押されている状態 */
-
- if( mp->type == MenuButton ){
- /* 追加 CAB, 修正 COR. */
- int ret= (*((MgButtonMenu*)mp)->
- exec)( wp, info, mp,
- ((MgButtonMenu*)mp)->opt );
- WindowDraw( wp, dbuf+1, 1 );
- return ret;
- }
-
- do{
- WindowGetEventInfo( info );
- if( ClipInner( (ClipClass*)mp,
- info->x-sx+hx, info->y-sy+hy ) ){
- if( !press ){
- WindowDraw( wp, dbuf, 1 );
- press= TRUE;
- }
- }else{
- if( press ){
- WindowDraw( wp, dbuf+1, 1 );
- press= FALSE;
- }
- }
- }while( info->LeftStat || info->RightStat );
- if( press ){
- if( mp->type == ToggleButton ){
- DrawSetLine( dbuf, mp->x1, mp->y1,
- mp->x2, mp->y2,
- (*(((MgButtonTgl*)mp)->sw)= !*(((MgButtonTgl*)mp)->sw))?
- ShadowDown : ShadowUp,
- OptionShadow );
- WindowDraw( wp, dbuf, 2 );
- }else{
- WindowDraw( wp, dbuf+1, 1 );
- }
- return mp->ret;
- }
- break;
- }
- }
- return FALSE;
- }
-
-